DVB-H is a standard for broadcasting services, such as television, to handheld receivers and adapts the Digital Video Broadcast—Terrestrial (DVB-T) standard for digital terrestrial television to the specific requirements of handheld, battery-powered receivers. DVB-H has been adopted by, among other countries and regions, the USA and the European Community. Like DVB-T, DVB-H determines formats for the transmission of a compressed digital audio/video stream, appropriately modulated and coded for transmission and subsequent reception by the handheld receiver. DVB-H utilizes a time-slicing process for data transmission to reduce receiver power consumption and to enable smooth service handover. DVB-H also provides for multi-protocol encapsulation with forward error correction (MPE-FEC) that provide Forward Error Correction (FEC) to IP datagrams delivered in Multi-protocol encapsulation (MPE) packets as described below.
Multi-protocol encapsulation (MPE) is a data transmission format generally used to broadcast Internet protocol (IP) data, also known as IP datagrams, in packets referred to as MPE packets. IP datagrams, used interchangeably hereinafter with “datagrams” are formatted segments of consecutive data bytes that conform to an internet protocol. IP datagrams may vary in length such that each datagram may have a different number of bytes. In MPE each IP datagram is encapsulated in its own MPE packet which typically includes a section header, a 6 byte media access control (MAC) address in front of the datagram and a cyclic redundancy check (CRC) byte in the rear. The MAC address is the address of the receiver(s) to which the MPE packets are transmitted. The CRC is an error-detection technique used to check for errors in transmitted data. CRC is described in greater detail below. MPE packets are typically transmitted in MPE frames, each MPE frame comprising a plurality of MPE packets. The structure of a MPE frame is described in greater detail below.
Data transmission using time slicing involves sending data in bursts using significantly higher instantaneous bit rates compared to the bit rates required if the data were transmitted using traditional streaming mechanisms. It allows a receiver to go into a “stand-by” mode requiring minimal power consumption for considerable periods of time while not receiving. During reception, the receiver switches into an “on” mode requiring relatively high power but only for a time necessary to receive the data bursts. This saves considerable amount of power in the device. Handover refers to a receiver switching from a first communication channel for receiving data from a transmitting station to an alternate communication channel for receiving data from the same station when the first communication channel degrades to a degree that warrants changing to a different channel. Time-slicing enables smooth handover between different DVB-H service networks as the receiver can scan for stronger signals and perform a transition to the stronger signal in the period of time between transmission of bursts (while in “standby” mode).
Each burst of transmitted data carries a data structure called a MPE-FEC frame, i.e. a data frame comprising an MPE frame having MPE packets and a Forward Error Correcting (FEC) frame comprising a Reed Solomon (RS) data table used for correcting data in the MPE frame. The MPE-FEC frame is a data matrix having 255 columns and a maximum of 1024 rows and thereby a data capacity of up to about 2 Mbit (2,000,000 bits). The structure of an MPE-FEC frame is described in DVB-H standard ETSI R 102 377 (2005-02), Digital Video Broadcasting (DVB): DVB-H Implementation Guidelines, the disclosures of which are incorporated herein by reference.
In order to properly receive and process data in a 2 Mbit MPE-FEC frame transmitted in a burst, DVB-H implementation guidelines require that a DVB-H receiver have a minimum of 2 Mbit of memory for storage of data transmitted in the frame. For small equipment such as portable handheld devices a 2 Mbit memory is relatively large and expensive. PCT/IL2006/000179, System and Method for Mitigating Memory Requirements during MPE-FEC Processing, the disclosure of which is incorporated herein by reference, describes a method and a system for saving memory space in certain types of handheld and mobile devices.
The RS data table in an MPE-FEC frame comprises 64 parity bytes for performing forward error correction for every 191 bytes of data in the Application data table. The parity bytes are encapsulated and transmitted as a plurality of “FEC sections” in the FEC frame following the transmission of the MPE frame. Each FEC section in a FEC frame corresponds with a column in the RS data table, every column comprising the parity bytes included in the respectively corresponding FEC section.
CRC is an error-detection technique comprising a check performed on an IP datagram by the receiver that receives the datagram using a “CRC” byte that the transmitter that transmits the datagram generates and attaches to the datagram. The CRC byte is generated responsive to data in the datagram in accordance with a predetermined algorithm of any of various CRC algorithms known in the art. The receiver, when it receives the datagram generates its own CRC byte responsive to the data in the received datagram and the same predetermined CRC algorithm. The receiver then compares its own CRC with the transmitted CRC to determine if an error has occurred during transmission. If the transmitted CRC and the received CRC are the same, then the datagram is assumed to be error free and the datagram is considered “reliable”. If the CRC's are different, then the datagram is flagged as comprising a byte in which an error has occurred. As it is not possible from the CRC to determine in which byte in the datagram an error has occurred, the whole datagram is considered “unreliable”. Datagrams that are known to have an error are considered unreliable and are conventionally referred to as “erasures”. All the bytes in an erasure are referred to as “erasure bytes”.
There may be situations for which the CRC of a datagram actually comprising an error does not indicate the presence of the error and as a result the datagram is considered reliable. The byte or bytes comprising the undetected error are referred to as “error bytes”. These situations have an extremely low probability of occurrence and are generally ignored.
RS codes are block-based error correcting codes generated by a RS encoder. To use RS codes, a data stream is organized into a series of code words prior to transmission. Each code word may consist of data bytes followed by several parity bytes. Upon reception, the receiver's RS decoder analyzes each code word according to an algorithm corresponding to that of the encoder in the transmitter, checks for errors and corrects the errors.
The number of bytes with errors, or byte errors, which may be corrected using RS error correction is based on the following equation:2t+e≦R, where t=number of error bytes, e=number of erasure bytes, and R=number of redundancy bytes used in the RS code. Since CRC allows for the detection of practically all errors in the datagrams, the number of error bytes (bytes having an error not indicated by the CRC) may be considered negligible and only erasures are generally corrected by the RS decoder. The RS decoder is therefore able to correct twice a number of errors compared to a number that it could correct were erasures not identified (i.e. if CRC or some other error detection technique known in the art were not used). In DVB-H a 64-byte RS decoder can correct up to 64 bytes out of a 255 byte code word while, without erasures it would only be able to correct up to 32 bytes out of a 255 byte code word.